:: Monad m => (a -> b) -> (m a -> m b) package:numeric-prelude

Using ApplicativeDo: 'fmap f as' can be understood as the do expression
do a <- as
pure (f a)
with an inferred Functor constraint.